接下來將實作一個Flutter Plugin 來上架至pub.dev,為整合Instagram 基本顯示 API在Android 以及iOS 的功能,此API 使用規則都在官方文件有介紹。
首先欲使用此Instagram Basic Display API,使用者必須先照官方文件取得INSTAGRAM_CLIENT_ID、INSTAGRAM_CLIENT_SECRET and REDIRECT_URI 資訊,並儲存在Android 以及iOS端來使用,所以我們在Plugin 上也要設計Android 和iOS 儲存這些機密資訊的方法。
我們需要使用者在android專案裡,建立一個secret.properties
,來為他們的專案設定這些資料,如下:
INSTAGRAM_CLIENT_ID = "388938XXXXXXXXX"
INSTAGRAM_CLIENT_SECRET = "f81e7feaXXXXXXXXXXXXXXXX"
REDIRECT_URI = "https://XXXXXXXXXXXX"
而在Plugin 裡,我們就會在build.gradle
引用Instagram base display api 所需的資料
def secretPropertiesFile = rootProject.file("secret.properties")
def secretProperties = new Properties()
secretProperties.load(new FileInputStream(secretPropertiesFile))
android {
compileSdkVersion 30
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
minSdkVersion 23
buildConfigField("String", "INSTAGRAM_CLIENT_ID", secretProperties['INSTAGRAM_CLIENT_ID'])
buildConfigField("String", "INSTAGRAM_CLIENT_SECRET", secretProperties['INSTAGRAM_CLIENT_SECRET'])
buildConfigField("String", "REDIRECT_URI", secretProperties['REDIRECT_URI'])
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
而在iOS 端我們需要使用者建立 Xcode Configuration Files:Secrets.xcconfig
INSTAGRAM_CLIENT_ID = "388938XXXXXXXXX"
INSTAGRAM_CLIENT_SECRET = "f81e7feaXXXXXXXXXXXXXXXX"
REDIRECT_URI = "https://XXXXXXXXXXXX"
之後在Plugin 裡Info.plist
就會去讀取Instagram base display api 所需的資料
<key>INSTAGRAM_CLIENT_ID</key>
<string>$(INSTAGRAM_CLIENT_ID)</string>
<key>INSTAGRAM_CLIENT_SECRET</key>
<string>$(INSTAGRAM_CLIENT_SECRET)</string>
<key>REDIRECT_URI</key>
<string>$(REDIRECT_URI)</string>